#ifndef MAIN_H
#define MAIN_H

//command line interface
#define CLI_INPUT_SIZE  1024
#define CLI_MAX_ARG_COUNT  10


#define ESC_CMD2(Pn,cmd)    "\x1b["#Pn#cmd
#define ESC_COLOR_ERROR     ESC_CMD2(31,m)
#define ESC_COLOR_DEFAULT     ESC_CMD2(39,m)
#define ESC_CLEAR_SCREEN    ESC_CMD2(2, J)
#define ESC_MOVE_CURSOR(row,col)     "\x1b["#row";"#col"H"

//定义命令结构(如echo,help,quit等)
typedef struct _cli_cmd_t
{
    const char* name;
    const char* usage;
    int (*do_func)(int argc,char** argv);
}cli_cmd_t;


//定义命令行接口结构
typedef struct _cli_t
{
    char curr_input[CLI_INPUT_SIZE];    //输入缓冲区
    const cli_cmd_t* cmd_start;
    const cli_cmd_t* cmd_end;
    const char* promot;     //这个字段表示shell前面的那个字符串:如[gale:/user/local$]
}cli_t;


#endif